package com.cn.por.biz.comt.bo.impl;
import cn.hsa.base.web.vo.PageFactory;
import cn.hsa.base.web.vo.PageResultData;
import com.cn.por.biz.comt.dao.ComtMgtADAO;
import com.cn.por.biz.comt.bo.ComtMgtABO;
import com.cn.por.biz.comt.entity.ComtMgtADO;
import com.cn.por.biz.comt.dto.ComtMgtADTO;
import com.cn.por.biz.comt.dto.ComtMgtADTOConverter;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.stereotype.Service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.List;
/**
 * <p>组件管理表实现层</p>
 * @author xx
 * @since 2024-12-17
 */
@Service
public class ComtMgtABOImpl extends ServiceImpl<ComtMgtADAO, ComtMgtADO>  implements ComtMgtABO {

    @Autowired
    private ComtMgtADTOConverter comtMgtADTOConverter; 
 
    @Autowired
    private ComtMgtADAO comtMgtADAO;

    /**
     * 新增组件，
     * @param comtMgtADTO
     * @return
     */
    @Override
    public ComtMgtADTO add(ComtMgtADTO comtMgtADTO){
      ComtMgtADO comtMgtADO = toDO(comtMgtADTO);
      comtMgtADO.setValiFlag("1");
      comtMgtADAO.insert(comtMgtADO);
      return toDTO(comtMgtADO);
    }

    @Override
    public Boolean delete(String id){
      ComtMgtADO comtMgtADO = new ComtMgtADO();
      comtMgtADO.setComtMgtId(id);
      comtMgtADO.setValiFlag("0");
      return comtMgtADAO.updateById(comtMgtADO)>0;
    }

    @Override
    public ComtMgtADTO update(ComtMgtADTO comtMgtADTO){
      ComtMgtADO comtMgtADO = toDO(comtMgtADTO);
      comtMgtADAO.updateById(comtMgtADO);
      return toDTO(comtMgtADO);
    }

    @Override
    public ComtMgtADTO get(String id){
      return toDTO(comtMgtADAO.selectById(id));
    }

    @Override
    public PageResultData<ComtMgtADTO> getPage(int pageNo, int pageSize, ComtMgtADTO comtMgtADTO){
      Page<ComtMgtADO> page = PageFactory.createPage(pageNo, pageSize);
      ComtMgtADO comtMgtADO = toDO(comtMgtADTO);
      QueryWrapper<ComtMgtADO> queryWrapper = new QueryWrapper<ComtMgtADO>();
      if (!StringUtils.isEmpty(comtMgtADO.getComtName()) ){
        queryWrapper.like("comt_name", comtMgtADO.getComtName());
      }
      queryWrapper.eq("VALI_FLAG","1");
      queryWrapper.orderByAsc("comt_mgt_id");
      page = comtMgtADAO.selectPage(page, queryWrapper);
      // do list --> dto list
      List<ComtMgtADO> records = page.getRecords();
      List<ComtMgtADTO> list = new ArrayList<ComtMgtADTO>();
      for (ComtMgtADO row : records) {
        list.add(toDTO(row));
      }
      PageResultData<ComtMgtADTO> result = PageFactory.createPage(list, page);
      return result;
    }

    private ComtMgtADO toDO(ComtMgtADTO comtMgtADTO){
      ComtMgtADO comtMgtADO = comtMgtADTOConverter.convertToComtMgtADO(comtMgtADTO);
      return comtMgtADO;
    }

    private ComtMgtADTO toDTO(ComtMgtADO comtMgtADO){
      ComtMgtADTO comtMgtADTO = comtMgtADTOConverter.convertToComtMgtADTO(comtMgtADO);
      return comtMgtADTO;
    }
}